a42dad9bacbdcb364cc46a10e1dd5faeb31d816a,plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/OptionalGetWithoutIsPresentInspection.java,OptionalGetWithoutIsPresentInspection,isSurroundedByIsPresentGuard,#PsiReferenceExpression#PsiElement#,82
Before Change
}
else if (!ControlFlowUtils.statementMayCompleteNormally(ifStatement.getElseBranch())) {
checker.negate = false;
checker.checkExpression(condition);
if (checker.hasIsPresentCall()) {
return true;
}
}
After Change
private static boolean isSurroundedByIsPresentGuard(PsiReferenceExpression optionalReference, PsiElement context) {
PsiStatement sibling = PsiTreeUtil.getParentOfType(context, PsiStatement.class);
sibling = PsiTreeUtil.getPrevSiblingOfType(sibling, PsiStatement.class);
final IsPresentChecker checker = new IsPresentChecker(optionalReference);
while (sibling != null) {
if (sibling instanceof PsiIfStatement) {
final PsiIfStatement ifStatement = (PsiIfStatement)sibling;
final PsiExpression condition = ifStatement.getCondition();
if (condition != null) {
if (!ControlFlowUtils.statementMayCompleteNormally(ifStatement.getThenBranch())) {
checker.negate = true;
if (checker.checkExpression(condition)) {
return true;
}
}
else if (!ControlFlowUtils.statementMayCompleteNormally(ifStatement.getElseBranch())) {
checker.negate = false;
if (checker.checkExpression(condition)) {
return true;
}
}